package com.atde._04_structural_design_patterns.composite;


import java.util.ArrayList;
import java.util.List;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._04_structural_design_patterns.composite
 * @Author: Del
 * @CreateTime: 2025-06-23  00:38
 * @Description: 组合模式 --- 聚合多个对象，将对象组合成树形结构，树形结构中可以包含树形结构
 *  University此类继承于最上的抽象类 OrganizationComponent，用于管理大学
 *  它相当于 根节点 Composite
 * @Version: 1.0
 */
public class University extends OrganizationComponent{

    // 聚合多个对象, 它实际的作用是 管理大学下的学院 College
   List<OrganizationComponent> organizationComponents = new ArrayList<>();

    public University(String name, String desc) {
        super(name, desc);
    }


    // 添加学院
    @Override
    protected void add(OrganizationComponent organizationComponent) {
        organizationComponents.add(organizationComponent);
    }

    // 删除学院
    @Override
    protected void remove(OrganizationComponent organizationComponent) {
        organizationComponents.remove(organizationComponent);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public String getDesc() {
        return super.getDesc();
    }


    // print方法，就是输出 University 的信息
    @Override
    protected void print() {
        System.out.println("==========="+getName()+"===========");
        // 遍历 organizationComponents 其管理的学院 College
        for (OrganizationComponent organizationComponent : organizationComponents) {
            organizationComponent.print();
        }
    }
}
